
module CLOCK
( 
//---------------------------------------------------------------------------
//--	外部端口声明
//---------------------------------------------------------------------------
input 				clk,					    //时钟端口
input 				rst,					    //复位端口						
input	[3:0]	    key_in,						//按键输入

output 				beep,						//蜂鸣器发声
output 	[5:0]	    sel,					    //数码管位选
output 	[7:0]	    seg				            //数码管段选
)

//---------------------------------------------------------------------------
//--	内部端口声明
//---------------------------------------------------------------------------
wire	[4:0]  	    number1;			
wire	[5:0]  	    number2;			
wire	[5:0]  	    number3;			
wire    [3:0]       key_flag;				    //消抖完毕输出
wire                music_flag;                 //闹钟准时信号
wire                flag;                       //控制蜂鸣器发声信号
wire                led_flag;                   //调整功能显示信号
//---------------------------------------------------------------------------
//--	逻辑功能实现	
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
//--    例化按键消抖模块
Key_Module			Key0_Init
(
	//输入
    .clk			    (clk			    ),		//时钟端口
	.rst			    (rst			    ),		//复位端口
	.key_in				(key_in[0]			),		//按键信号
	//输出
    .key_flag			(key_flag[0]		)		//消抖完毕输出
);

Key_Module			Key1_Init
(
	//输入
    .clk			    (clk			    ),		//时钟端口
	.rst			    (rst			    ),		//复位端口
	.key_in				(key_in[1]			),		//按键信号
	//输出
    .key_flag			(key_flag[1]		)		//消抖完毕输出
);

Key_Module			Key2_Init
(
	//输入
    .clk			    (clk			    ),		//时钟端口
	.rst			    (rst			    ),		//复位端口
	.key_in				(key_in[2]			),		//按键信号
	//输出
    .key_flag			(key_flag[2]		)		//消抖完毕输出
);

Key_Module			Key3_Init
(
	//输入
    .clk			    (clk			    ),		//时钟端口
	.rst			    (rst			    ),		//复位端口
	.key_in				(key_in[3]			),		//按键信号
	//输出
    .key_flag			(key_flag[3]		)		//消抖完毕输出
);

//---------------------------------------------------------------------------
//--    例化时钟计时模块
Counter_Module		Counter_Init
(
	//输入
    .clk			    (clk			    ),		//时钟端口
	.rst			    (rst			    ),		//复位端口
	.key_flag		    (key_flag		    ),		//消抖完毕输出
	//输出
    .number1	        (number1	        ),		
	.number2	        (number2	        ),		
	.number3        	(number3	        ),		
    .music_flag         (music_flag         ),      //闹钟准时信号
    .led_flag           (led_flag           )       //调整功能显示信号
);
 
//---------------------------------------------------------------------------
//--    例化蜂鸣器乐谱模块
Music_Module        Music_Init
(
    //输入
    .clk                (clk                ),
    .rst                (rst                ),
    .key_flag           (key_flag           ),      //消抖完毕输出
    .music_flag         (music_flag         ),      //闹钟准时信号
    //输出
    .flag               (flag               )       //控制蜂鸣器发声信号
);

//---------------------------------------------------------------------------
//--    例化蜂鸣器发声模块
beep_Module			beep_Init
(
	//输入
    .clk			    (clk			    ),		//时钟端口
	.rst			    (rst			    ),		//复位端口
	.flag               (flag               )       //控制蜂鸣器发声信号
    //输出
    .beep				(beep				),		//蜂鸣器发声
	
);

//---------------------------------------------------------------------------
//--    例化数码管模块
Segled_Module		Segled_Init
(
	//输入
    .clk		        (clk		        ),		        
	.rst			    (rst			    ),		        
	.number1	        (number1	        ),		
	.number2	        (number2	        ),		
	.number3        	(number3	        ),				        
	.key_flag           (key_flag           ),      //消抖完毕输出
    .led_flag           (led_flag           ),      //调整功能显示信号
    //输出
    .sel			    (sel			    ),		//数码管位选
	.seg		        (seg		        )		//数码管段选
); 
 



endmodule;